package com.seeyon.apps.sphr.kit;

import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;

public class FileKit {

    /**
     * 将指定路径的文件内容转换为Base64编码的字符串
     * 如果需要，可以进一步对Base64编码后的字符串进行URL编码
     * 此方法用于处理文件内容的序列化，以便在不同系统之间方便地传输或存储文件内容
     *
     * @param path 文件路径
     * @param urlEncode 指示是否需要对Base64编码后的字符串进行URL编码
     * @return Base64编码（可选地，URL编码）后的文件内容字符串
     * @throws Exception 如果文件读取失败或URL编码失败
     */
    public static String getFileContentAsBase64(String path, boolean urlEncode) throws Exception {
        // 读取文件路径的所有字节
        byte[] b = Files.readAllBytes(Paths.get(path));
        // 将文件内容的字节数组转换为Base64编码的字符串
        String base64 = Base64.getEncoder().encodeToString(b);
        // 如果需要对Base64编码的字符串进行URL编码
        if (urlEncode) {
            // 对Base64编码的字符串进行URL编码
            base64 = URLEncoder.encode(base64, "utf-8");
        }
        // 返回Base64（或进一步URL编码）的字符串
        return base64;
    }
}
